/** 通用配置项
 * ENV: 所属环境 ( local: 本地 , dev: 测试 , pre: 准生产 , prod: 生产 )
 * authUrl: 授权地址
 * domains: 接口请求域名集合
 * cache_keys: 本地缓存key名列表
 * const: 常量值
 */
(function (root, factory) {
  if (typeof exports === 'object') {
    module.exports = factory();
  } else if (typeof define === 'function' && define.amd) {
    define(factory);
  } else {
    root.common = factory();
  }
})(this, function () {
  const MODULE_KEY = window.APP_PROJECT || 'template';
  const ENV = window.APP_ENV || 'local'; // 测试环境: dev; 准生产: pre; 生产: prod;
  const envConfig = {
    local: {
      // 本地环境
      apiDomains: ['/gtxySyncPromotec'], // 接口域名
    },
    dev: {
      // 测试环境
      apiDomains: ['https://jghwucyshtgjcbrnxgwe.gtxygroup.com/syncpromotecs'], // 接口域名
    },
    pre: {
      // 准生产
      apiDomains: ['https://mktcldxylmyxrhgwzsc.postar.cn'], // 接口域名
    },
    prod: {
      // 生产环境
      apiDomains: ['https://mktcldxylmyxrhgw.postar.cn'], // 接口域名
    },
  };

  const { apiDomains } = envConfig[ENV];

  return {
    ENV,
    domains: {
      '#apiDomain#': apiDomains.map((url, index) => ({ url, selected: index === 0, checked: 0 })),
    },
    cache_keys: {
      NOW_PATH: 'now_path', // 缓存当前页面的页面
      TOKEN: 'token', // token缓存名称
      ACCESS_TOKEN: 'access_token', // access_token
      REFRESH_TOKEN: 'refresh_token', // 刷新token key名
      CACHE_AUTH_COUNT: 'cache_auth_count', // 已尝试授权次数名称
      RANDOM_DES_KEY: 'random_des_key', // des加密 key 的缓存名称
      RANDOM_AES_KEY: 'random_aes_key', // aes加密 key 的缓存名称
    },
    const: {
      MODULE_KEY, // 当前活动key
      USE_TOKEN: false, // 是否使用access_token机制代替 openid/userid
      TOKEN_EXPIRE: 3 * 3600, // access_token 过期时间 3小时
      REFRESH_TOKEN_EXPIRE: 2 * 24 * 3600, // refresh_token 过期时间 2天
      DEFAULT_CONTENT_TYPE: 'application/json', // application/json application/x-www-form-urlencoded
      DEFAULT_CRYPT_TYPE: '', // 默认加密方式des

      DEFAULT_DES_KEY: '', // des加密的默认 key 值
      DES_IV: '', // des加密偏移量 iv

      DEFAULT_AES_KEY: '', // aes加密的默认 key 值，16位长度
      AES_IV: '', // aes加密偏移量 iv

      SALT: '',
      // RSA公钥
      PUBLIC_RSA_KEY: '',
    },
  };
});
